\chapter{Conclusion}
\label{chapter:Conclusion}
%\TODO{Conclusion of this project. Recap the contribution. }
In this thesis, I have designed and implemented a framework for view-dependent streaming of 3D geometry models. This framework is consisted of two parts: server-side and client-side. The server is implemented in C++ and can run on any desktop computers. The client is implemented in objective-c on iOS system. We deployed the client on an iPad device. \\

The main contribution of our streaming framework is that a user can view a gradually refining large geometry model on an iPad device over network, instead of downloading the whole model once from the server and then viewing it, thus saving unnecessary time of waiting. \\

The Geometry models are expressed in the form of progressive meshes, thus supporting smooth transformation between different levels of detail. Those progressive meshes are produced by Quadric Error Metrics(QEM) method from original meshes. Furthermore, to enable the view-dependent streaming of the progressive mesh, the vertex hierarchy trees data structure is implemented on the progressive mesh. In simple words, the surface of a mesh is divided into several independent parts where for a vertex in a specific vertex hierarchy tree, its splitting dependencies remain in this vertex hierarchy tree. Therefore it is possible to only refine the viewing part of the mesh. \\

And the rendering work of our framework can be both done from the server-side and client-side. In the situation of client rendering, the refinement and drawing work are both performed on the iPad device. And the server is just streaming geometry details ($vsplits$) to client. On the other hand, in the situation of server rendering, the refinement and drawing work are performed by the server. What is transmitted between server and client is compressed rendered images from server. \\

in Chapter~\ref{chapter:result}, we have introduced experimental evaluation of our framework with several models. The evaluation results should also be described two-folded. 
\begin{enumerate}
\item
In the scenario of client rendering, models under 1M triangles can be refined and rendered within about 40 seconds. And if we look at the memory consumption and CPU usage, it can be found that the server side CPU usage is not high and memory consumption remains acceptable. 

\item
In the scenario of server rendering, models over 1M triangles can be refined, rendered and transmitted (in the form of rendered image) within about 20 seconds.  For example: the model "hapy\_vrip" (for model information see \TAp{table:modelsserverrendering}). Actually the server rendering is rather faster than client rendering, because of the much more powerful computing and memory resource in the server side. Even though, it is not proper to compare client rendering with server rendering simply depending on speed. In some cases client rendering could be faster than server rendering. For example, during client rendering, those parts already transmitted and refined will remain on the client side to be re-viewed later on. However, during server rendering, on the contrary, the model is always updating and unnecessary parts of the model will always be simplified, which means refinement is always required whenever that part will be re-viewed. 

\end{enumerate}

Furthermore, some visual results of our framework are showed in \SCp{section:clientvisualquality} and \SCp{section:servervisualquality}. The effects of transforming from different LOD can be found in the screen shots illustrated. 


\section{Future Work}
\label{section:future work}
%\TODO{Discuss potential future work. like discussion of Quadric Error metrics ... advantage and disadvantage}
Future work of the view-dependent progressive mesh streaming framework proposed in this thesis can be categorized into three aspects -  Data Structure, Performance and Multiple Platform Support. In this section potential future work about these three aspects will be discussed. 

\begin{enumerate}
\item
\textbf{Data Structure}	In our application we use the progressive mesh with vertex hierarchy trees as the data structure representation of the geometry model. As is described in Chapter~\ref{chapter:BasicConcepts} the vertex hierarchy trees divide the model's surface. Therefore, it would be ideal that the vertex hierarchy trees are distributed evenly on model's surface and split the surface into many sub areas with proper degree of fineness. How to produce such balanced vertex hierarchy trees from a model's progressive mesh structure could be a potential future work. 

\item
\textbf{Performance}		There still be some space for improving the performance of the whole system. As is illustrated in \FGp{fig:hand_new_cpu}, during the streaming process there are still some idle time of server's CPU usage. This happens when the server has transmitted the packet of $vsplits$ and wait until its client to finish the following tasks: (1) refinement, (2) rendering and (3) re-sync viewing parameter with decreased screen error tolerance and updated viewing angle, etc. Actually in most cases of this idle time, the client just decrease screen error tolerance and user doesn't rotate or zoom the model. And the server side may take use of this idle time to continue to produce $vsplits$ packets. These packets are actually for the next viewing param sync which the server will receive later. This can eliminate unnecessary idle time of server side, thus significantly reducing elapsed time for each transmission. Some future work may focus on the server-side prediction of user action in this situation. Besides, there are also a lot of future work concerning performance can be done such as improving the network protocol efficiency, improving memory consumption and improving graphics rendering performance. 

\item
\textbf{Multiple Platform Support}	Current only iOS devices are supported in our framework. And it would be obviously necessary to support other mobile devices such as Android and Windows Mobile. This can also be a potential future work. 

\end{enumerate}

\section{Acknowledgment}
\label{section:acknowledgement}
Finally I would like to thank Prof. Dr. Jens Krueger for help with forming the big picture of this project and his kind help during this thesis project and thank Dr. Tino Weinkauf for useful advices on multithread programming. I also would like to thank Georg Tamm for his kind help in C++ programming. And finally I would like to express my deep appreciation to every of the IVDA group. This work can never be finished without their support.



%Picture
%\noindent
%\begin{minipage}{\linewidth}
%\makebox[\linewidth]{%
%\includegraphics[width=1.0\textwidth]{images/morphable.pdf}}
%\captionof{figure}{MorphableUI generates user-tailored interfaces for arbitrary applications in arbitrary environments. Users are able to use all available devices to control as many applications as needed. User behavior is analyzed by the system to increase the user experience.}% only if needed
%\label{fig:morphable}
%\bigskip
%\end{minipage}


